{
 "cells": [
  {
   "cell_type": "markdown",
   "id": "134e7f9d",
   "metadata": {},
   "source": [
    "# Demo 7: Pruning\n",
    "\n",
    "We usually use pruning to make neural networks sparser hence more efficient and more interpretable. KANs provide two ways of pruning: automatic pruning, and manual pruning."
   ]
  },
  {
   "cell_type": "markdown",
   "id": "7fd6a742",
   "metadata": {},
   "source": [
    "## Pruning nodes"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "id": "2075ef56",
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "train loss: 3.57e-02 | test loss: 3.54e-02 | reg: 4.32e+00 : 100%|██| 20/20 [00:10<00:00,  1.83it/s]\n"
     ]
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 500x400 with 22 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "from kan import *\n",
    "# create a KAN: 2D inputs, 1D output, and 5 hidden neurons. cubic spline (k=3), 5 grid intervals (grid=5).\n",
    "model = KAN(width=[2,5,1], grid=5, k=3, seed=1)\n",
    "\n",
    "# create dataset f(x,y) = exp(sin(pi*x)+y^2)\n",
    "f = lambda x: torch.exp(torch.sin(torch.pi*x[:,[0]]) + x[:,[1]]**2)\n",
    "dataset = create_dataset(f, n_var=2)\n",
    "dataset['train_input'].shape, dataset['train_label'].shape\n",
    "\n",
    "# train the model\n",
    "model.fit(dataset, opt=\"LBFGS\", steps=20, lamb=0.01);\n",
    "model(dataset['train_input'])\n",
    "model.plot()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "id": "280cc49f",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 500x400 with 6 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "mode = 'auto'\n",
    "\n",
    "if mode == 'auto':\n",
    "    # automatic\n",
    "    model = model.prune_node(threshold=1e-2) # by default the threshold is 1e-2\n",
    "    model.plot()\n",
    "elif mode == 'manual':\n",
    "    # manual\n",
    "    model = model.prune_node(active_neurons_id=[[0]])"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "cf7001ab",
   "metadata": {},
   "source": [
    "## Pruning Edges"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 17,
   "id": "b58417be",
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "train loss: 6.02e-02 | test loss: 6.10e-02 | reg: 5.11e+00 : 100%|████| 6/6 [00:04<00:00,  1.36it/s]\n"
     ]
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 500x400 with 22 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "from kan import *\n",
    "# create a KAN: 2D inputs, 1D output, and 5 hidden neurons. cubic spline (k=3), 5 grid intervals (grid=5).\n",
    "model = KAN(width=[2,5,1], grid=5, k=3, seed=1)\n",
    "\n",
    "# create dataset f(x,y) = exp(sin(pi*x)+y^2)\n",
    "f = lambda x: torch.exp(torch.sin(torch.pi*x[:,[0]]) + x[:,[1]]**2)\n",
    "dataset = create_dataset(f, n_var=2)\n",
    "dataset['train_input'].shape, dataset['train_label'].shape\n",
    "\n",
    "# train the model\n",
    "model.fit(dataset, opt=\"LBFGS\", steps=6, lamb=0.01);\n",
    "model(dataset['train_input'])\n",
    "model.plot()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 18,
   "id": "4d57cbfe",
   "metadata": {},
   "outputs": [],
   "source": [
    "model.prune_edge()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 19,
   "id": "e3a23aed",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 500x400 with 22 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "model.plot()"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "1db74fbd",
   "metadata": {},
   "source": [
    "## Prune nodes and edges together"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "4e7e2c8a",
   "metadata": {},
   "source": [
    "just use model.prune()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 20,
   "id": "1ea08f0e",
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "train loss: 3.57e-02 | test loss: 3.54e-02 | reg: 4.32e+00 : 100%|██| 20/20 [00:11<00:00,  1.71it/s]\n"
     ]
    },
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAZcAAAFICAYAAACcDrP3AAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjYuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8o6BhiAAAACXBIWXMAAA9hAAAPYQGoP6dpAAAzJklEQVR4nO3de1xUdf4/8NcZbnIVRdTwyk1WuYo3UhTMC5mt65qaaaVmrdFtt2+76VqaQbXf2m0T20TTLlp9o1LTvISVBqh4KVLwgigSFhKaclFkuMycz++Plvk5ZsrAYc6Zmdfz8eDxUGbmzJs3c3jN53POnI8khBAgIiJSkE7tAoiIyP4wXIiISHEMFyIiUhzDhYiIFMdwISIixTFciIhIcQwXIiJSHMOFiIgUx3AhIiLFMVyIiEhxDBciIlIcw4WIiBTHcCEiIsUxXIiISHEMFyIiUpyz2gUQ2QIhBC5evIja2lp4eXnBz88PkiSpXRaRZnHkQnQD1dXVSEtLQ2hoKPz9/REYGAh/f3+EhoYiLS0N1dXVapdIpEkSV6Ikur4dO3bgrrvuQl1dHYBfRi/NmkctHh4e2LBhA5KSklSpkUirGC5E17Fjxw5MnDgRQgjIsvyb99PpdJAkCdu2bWPAEF2F4UJ0jerqavTs2RN6vf6GwdJMp9PB3d0dZWVl8PX1bf8CiWwAj7kQXWPt2rWoq6trUbAAgCzLqKurw7p169q5MiLbwZEL0VWEEAgNDUVJSQks2TUkSUJQUBBOnTrFs8iIwHAhMnPhwgX4+/u36fF+fn4KVkRkmzgtRnSV2traNj3+8uXLClVCZNsYLkRX8fLyatPjvb29FaqEyLYxXIiu4ufnh+DgYIuPm0iShODgYHTu3LmdKiOyLQwXoqtIkoTHH3+8VY994okneDCf6L94QJ/oGvycC1HbceRCdA1fX19s2LABkiRBp7vxLtL8Cf2NGzcyWIiuwnAhuo6kpCRs27YN7u7ukCTpV9Ndzd9zd3fH9u3bMX78eJUqJdImhgvRb0hKSkJZWRmWLVuGoKAgs9uCgoKwbNkynD17lsFCdB085kLUAkIIfP311xgzZgx27tyJ0aNH8+A90Q1w5ELUApIkmY6p+Pr6MliIboLhQkREimO4EBGR4hguRESkOIYLEREpjuFCRESKY7gQEZHiGC5ERKQ4hgsRESmO4UJERIpjuBARkeIYLkREpDiGCxERKY7hQkREimO4EBGR4hguRESkOIYLEREpjuFCdBNNTU04e/YsCgsLAQCnT59GZWUlZFlWuTIi7eIyx0S/obq6Ghs2bMAHH3yAY8eO4fLly2hsbESHDh3g7++PkSNHYt68eRgxYgScnZ3VLpdIUxguRNexb98+PPnkkygoKMCQIUMwceJEREVFwcvLC9XV1cjLy8OWLVtQXFyMu+++Gy+88AL8/f3VLptIMxguRNf44osvMGfOHHh5eeEf//gH7rjjDjQ2NiIjIwMNDQ3w8fHBjBkz0NTUhIyMDCxduhTh4eF477330K1bN7XLJ9IEhgvRVU6ePInbb78dnp6eyMjIwIABAyBJEkpKShAbG4uamhoEBgYiLy8PnTp1ghACe/bswcyZM5GYmIg1a9bAzc1N7R+DSHU8oE/0X0ajES+99BKqqqrwn//8xxQsNyJJEuLj4/HKK69g8+bNyMzMtFK1RNrGcCH6r+LiYmzZsgVTpkxBfHz8TYOlmSRJmDx5MuLi4rB69WoYDIZ2rpRI+3iKC9F/5ebmora2FnfddRdKS0tx5coV021lZWUwGo0AgMbGRhw7dgw+Pj6m2wMCAjBlyhQsXboUFRUV6Nmzp9XrJ9IShgvRf504cQIeHh4ICgrC/PnzsXfvXtNtQgg0NDQAAMrLyzFu3DjTbZIk4dVXX0VkZCTq6upQXl7OcCGHx3Ah+i+9Xg9nZ2e4ubmhoaEB9fX1172fEOJXtxkMBri7u5uFEJEjY7iQQ5NlGcePH0d2djZ27dqFuro6VFdXY9iwYfD09DTdT6/XIzc31xQiw4cPN31wUpIk9O7dG+fPn4dOp0OnTp3U+nGINIPhQg5FlmUcO3YMWVlZyM7ORk5ODi5cuAAXFxeEhISgoaEBBw8exMsvv2z2uJKSEgwZMgQ1NTXo1q0bPvroI/j6+ppulyQJixYtQvfu3dGjRw9cfYZ/S08MILInDBeya7Is48iRI8jKykJOTg6ys7NRWVkJV1dXDBs2DMnJyRg1ahRuvfVW6PV6xMfHY+3atbjnnnvMDtg7OTmZ/i1JEnQ6nel7QgiUl5dj/fr1mDRpEnx9fSFJkilgrv0oGcOGHAHDheyK0WhEQUEBsrOzTSOTqqoquLm5IS4uDo899hgSEhIQFxcHd3d3s8d6eHjgsccew1NPPYXly5dj4cKFLbpmWENDA1JTU6HX6zF//nxTeFwbIgwbciQMF7JpRqMR+fn5pmmu3bt3o7q6Gm5ubrj11lvxxBNPIDExEcOGDUOHDh1uur05c+YgJycHL7/8Mjw8PJCcnGx6nLOzM5ydnc1GLJcvX8aLL76IjIwMvPbaawgLC/vNbTNsyJHw8i9kUwwGAw4fPmya5tq9ezdqamrQoUMHDB8+HAkJCUhISMDQoUNbFCbX8/PPP+PRRx/F1q1bkZSUhCeffBL9+/dHUVERZFmGq6srQkJCcPDgQfzrX//C4cOHkZKSguTkZLPpM0v91q7IsCFbxHAhTTMYDPjuu+9M01y7d+/G5cuX4e7ujhEjRmDUqFFITEzEkCFDFL2m15UrV7B69WosX74c586dQ1BQEEJDQ+Ht7Y2qqioUFRWhvLwcgwYNwnPPPYeEhATodMpe8IJhQ7aM4UKa0tTUhLy8PFOY7NmzB7W1tfDw8EB8fLwpTAYPHgxXV9d2r6eiogI7d+5EdnY2SkpKUF9fj06dOiEiIgLjx4/HsGHD4OHh0e51AAwbsi0MF1JVU1MTvv32W9M01549e3DlyhV4enoiPj7eNM01ePBguLi4qFqr0WiEEAI6nU7xUUprMGxIyxguZFWNjY345ptvTCOTvXv3oq6uDl5eXhg5cqRpZBIbG6t6mNgahg1pCcOF2lXzhxKbwyQ3Nxd6vR4+Pj5mYTJw4EAuFawwhg2pieFCiqqvr8fBgwdN01y5ubmor6+Hj48PRo0aZZrmiomJYZhYGcOGrInhQm1SX1+P/fv3m0Ym+/btQ0NDA3x9fTFq1CjTyCQ6OrpNp+mS8hg21J4YLmQRvV6Pffv2IScnB1lZWThw4AAaGhrQqVMn08gkMTERkZGRDBMbw7AhJTFc6Ibq6uqwb98+08jkwIEDaGxshJ+fn9k0V2RkpCbOoCLlMGyoLRguZObKlSvIzc01jUwOHjyIpqYmdOnSBQkJCaZprvDwcIaJg2HYkCUYLg6utrYWubm5yM7ORlZWFr755hsYDAb4+/ubRiWJiYno378/w4TMMGzoRhguDuby5cvYu3evaZrr22+/hcFgQLdu3UxhkpCQgP79+/OPBFmEYUNXY7jYuUuXLmHPnj2mMMnLy4PRaET37t2RmJhomuYKCwvjHwFSFMPGsTFc7ExNTY0pTLKysvDdd99BlmUEBASYhUloaCh3crIqho1jYbjYuOrqauzevds0Mjl06BBkWUaPHj2QmJhomuYKCQnhTkyawrCxbwwXG1NZWYndu3ebzuY6fPgwhBDo1auX2cgkKCiIOynZFIaNfWG4aNzFixdNI5OsrCwUFBRACIHevXtj9OjRpjDp27cvd0KyKwwb28Zw0ZgLFy4gJyfHNM1VUFAAAAgMDDQ7m6tv377qFkqkguv9uWLYaBPDRWXnz59HTk6OaZrr6NGjAICgoCDTNFdCQgL69OmjcqVE2sOw0S6Gi5WdO3cO2dnZpjA5fvw4ACAkJMQsTHr16qVypUS2h2GjHQyXdlZRUWGa4srOzkZhYSEAoF+/fmbTXD169FC5UiL7w7BRD8NFYeXl5WYjk6KiIgBAWFiY2cgkICBA5UqJHA/DxnoYLm109uxZ08JYWVlZOHXqFACgf//+ZmHSvXt3lSslomsxbNoPw8VCP/74o9k0V3FxMQAgPDzcNMU1atQodOvWTeVKichSDBvlMFxu4ocffkBWVpYpTEpKSgAAERERppHJqFGj0LVrV5UrJSKlMWxaj+FyjdLSUrNprtLSUgBAVFSUWZh06dJF3UKJyOoYNi3n0OEihMD3339vNs115swZSJKE6Oho0zTXyJEj4efnp3a5RKQxvIrAb3OocBFCoKSkxGxk8uOPP0KSJMTExJgu9Dhy5Eh06tRJ7XKJyMYwbP4/uw4XIQSKi4vNwuTs2bPQ6XQYOHCgaWQSHx/PMCEixTly2NhVuAghcPLkSbNprvLycuh0OgwaNMgsTDp27Kh2uUTkYBwpbGw6XIQQKCoqMhuZVFRUwMnJCYMGDTIdgI+Pj4ePj4/a5RIRmbHnsLHpcGlqakLnzp1RX1+PIUOGmEYmI0aMgLe3t9rlERFZ5Oo/x7YeMJoMl9TUVAQEBKBz587t9hwXL17Egw8+2G7bJyJyZJoMlxkzZuDAgQM4dOgQPD092+U5Zs2ahY8//rhdtk1E5Oic1S7geiRJQkREBGbOnInt27erXQ4REVlIk+ECABkZGfDx8UFtbS28vLzULoeIiCygU7uA3+Lp6Ylx48Zh7ty5apdCREQW0uzIBfhl9OLn5wdZlqHTaTYHiYjoGpr+i+3r64tbbrkFK1asULsUIiKygKbDBQA2btyIv/3tb7/5YSMiItIezYfLkCFDYDQacfz4cbVLISKiFtJ8uEiShKVLl2LSpElql0JERC2k+XABgAULFqC0tBSVlZVql0JERC1gE+Hi5OSEe+65B3/84x/VLoWIiFpA06ciX23NmjXw8vLCmTNn0KdPH7XLISKiG7CJkQsAdOjQAQsXLsSYMWN45hgRkcbZTLgAQEpKCurr6/H8888zYIiINMxmpsUAQKfTISsrCxERERg8eDAmTpxo82seEBHZI5sauQBASEgIMjIyMH36dGRlZXEEQ0SkQTYXLgDwhz/8AW+88QYmTZqEL774ggFDRKQxNhkukiRhzpw5SE9Px9SpU5GRkcGAISLSEJs65nI1SZIwa9YsdOzYEffffz+Ki4uxcOFCuLi4qF0aEZHDs8mRSzNJknDnnXdi586d+OCDDzB58mQUFhZyFENEpDKbDhfgl4CJjY3F3r17ERAQgDFjxuB//ud/cPjwYTQ2NjJoiIhUYPPh0szPzw+rVq3C+vXrUVFRgcmTJ+P222/Hv//9b+Tn50Ov1zNoiIisxGaPuVyPTqfD8OHDERcXh5KSEnz55ZfYtm0b3njjDXTv3h2jRo1CXFwcQkJC1C6ViMiuaTZc2jLKkCQJwcHBCA4OxoMPPoiysjLs3bsXu3btwksvvYTq6mrExMQoVywREZnRZLh06dIFmzZtUnSbnp6euPPOOzF27FhUVlaipqZG0e0TEdH/JwkNHogwGAzt/hySJMHJyandn4eIyBFpMlwscXX5vM4YEZE22PzZYocOHYKTkxMOHTqkdilERIqx8ff9th8uRESkPQwXIiJSHMOFiIgUx3AhIiLFMVyIiEhxDBciIlIcw4WIiBTHcCEiIsUxXIiISHEMFyIiUhzDhYiIFMdwISIixTFciIhIcQwXIiJSHMOFiIgUx3AhIiLFMVyIiEhxDBciIlIcw4WIiBTHcCEiIsUxXIiISHEMFyIiUhzDhYiIFMdwISIixTFciIhIcQwXIiJSHMOFiIgUx3AhIiLFMVyIiEhxzmoX0BZCCFRVVQEAqqqqIISAJEkqV6VtQghcvHgRtbW18PLygp+fH3vWAuyb5diz1mnu2+XLl+Ht7W2zfbPJkUt1dTXS0tIQGhqKsWPHQgiBsWPHIjQ0FGlpaaiurla7RM25umf+/v4IDAyEv78/e3YT7Jvl2LPWubZvQUFBtt03YWMyMzOFp6enkCRJSJIkAJi+mr/n6ekpMjMz1S5VM9iz1mHfLMeetY499s2mwiUzM1M4OTkJnU5n1vxrv3Q6nXBycrKpX0R7Yc9ah32zHHvWOvbaN0kIIZQeDbWH6upq9OzZE3q9HrIs3/T+Op0O7u7uKCsrg6+vb/sXqEHsWeuwb5Zjz1rHnvtmM8dc1q5di7q6uhb9AgBAlmXU1dVh3bp17VyZdrFnrcO+WY49ax177ptNjFyEEAgNDUVJSQksKVeSJAQFBeHUqVM2ebZFW7BnrcO+WY49ax1775tNhMuFCxfg7+/fpsf7+fkpWJH2sWetw75Zjj1rHXvvm01Mi9XW1rbp8ZcvX1aoEtvBnrUO+2Y59qx17L1vNhEuXl5ebXq8t7e3QpXYDvasddg3y7FnrWPvfbOJcPHz80NwcLDF84uSJCE4OBidO3dup8q0iz1rHfbNcuxZ69h732wiXCRJwuOPP96qxz7xxBOaPujVXtiz1mHfLMeetY69980mDugD9n0+eHthz1qHfbMce9Y69tw3mxi5AICvry82bNgASZKg0924bJ1OB0mSsHHjRs3/AtoTe9Y67Jvl2LPWseu+WfuSAG3V0mvw7NixQ+1SNYM9ax32zXLsWevYY99sLlyEEKKqqkqkpaWJ4OBgs19CcHCwSEtLE9XV1WqXqDnsWeuwb5Zjz1rH3vpmk+HSTJZlsXPnTgFA7Ny5U8iyrHZJmseetQ77Zjn2rHXspW82c8zleiRJMs09+vr6av7sCS1gz1qHfbMce9Y69tI3mw4XIiLSJoYLEREpjuFCRESKY7gQEZHiGC5ERKQ4hgsRESmO4UJERIpjuBARkeIYLkREpDiGCxERKY7hQkREimO4EBGR4hguRESkOIYLEREpjuFCRESKY7gQEZHibDZcamtrcfLkSRw5cgQAUFFRgcbGRpWr0r7a2lqcOXMGAFBYWIgff/yRfbuJpqYmnD17FoWFhQCA06dPo7KyErIsq1yZtvG1Zjl7+rsmCSGE2kVYoqSkBGvWrMFnn32GH3/8EU1NTWhoaICPjw8GDhyI2bNnY8qUKfD29la7VE25um9nzpyBXq+Hq6srPD09ERkZyb5dR3V1NTZs2IAPPvgAx44dw+XLl9HY2IgOHTrA398fI0eOxLx58zBixAg4OzurXa5m8LVmOXv8u2Yz4WI0GvHhhx9i0aJF0Ov1mDBhAsaNG4fevXtDlmUUFxfj888/x9dff43Y2Fi8/vrrGDBggNplq459a519+/bhySefREFBAYYMGYKJEyciKioKXl5eqK6uRl5eHrZs2YLi4mLcfffdeOGFF+Dv76922aria81ydt0zYQOMRqN44403hKenp5gwYYLIz88XBoNB5ObmirS0NJGWliYKCwtFY2OjyM7OFoMHDxZhYWHiyJEjapeuKvatdXbs2CFuueUWERoaKtavXy/q6upEdXW1WLlypUhLSxPvvPOO0Ov14tKlS+LNN98UAQEBYty4caKiokLt0lXD15rl7L1nNhEuX3/9tfD19RVTp04VlZWVQpZlIYQQzz77rAAgAIj33ntPCCGELMvizJkzYvjw4SI+Pl5UVVWpWLm62DfLFRUVicDAQBERESGOHj1q6tnp06dFx44dBQARGBgoKisrhRC/9C0nJ0f07NlT3HvvvaK+vl7N8lXD15rl7L1nmj+gr9frkZKSgm7duuG1116Dr68vJEn6zftLkoRevXrh9ddfx8mTJ/H+++9bsVrtYN8sZzQa8dJLL6Gqqgr/+c9/MGDAgBv2DPilb/Hx8XjllVewefNmZGZmWqla7eBrzXKO0DPNh0teXh7279+PRx55BD169Ljpzg788ouIiYnB9OnT8e6776Kurs4KlWoL+2a54uJibNmyBVOmTEF8fHyLegb80rfJkycjLi4Oq1evhsFgaOdKtYWvNcs5Qs80f4pLVlYW3NzcMHbsWBQWFprtuOfOnTP9+4cffkBBQYHp/76+vpg8eTLef/99lJaW2s5BMIWwb5bLzc1FbW0t7rrrLpSWluLKlSum28rKymA0GgEAjY2NOHbsGHx8fEy3BwQEYMqUKVi6dCkqKirQs2dPq9evFr7WLOcQPVN7Xu5m7r33XtGvXz9x8uRJ0bt3b9GhQwfTl7Ozs2lu0sXFxey2uXPniu+//1506dJFfP7552r/GFbHvlnu6aefFr6+vqKwsFCMGTPGrC9ubm6mnkmSZHabu7u7WLFihdi9e7fw9vYWBw4cUPtHsSq+1iznCD3T9MhFCIH6+nq4ubnByckJ9fX1qK+vv+59m5qa0NTUZPp/Y2MjXF1dTY9zJOxb6+j1ejg7O8PNzQ0NDQ2/+fM39/dqBoMB7u7uEEKgoaHBGuVqAl9rlnOUnmk6XCRJQpcuXXDw4EEYjUaMHj0a1dXVpttPnTqFkpISAEBkZCQCAgJMt0VFRaG6uhq1tbV44403UFRUhOjoaERFReGWW25p8Xy6LVKibw0NDejcubO1S1dV165dodfrUV1djWHDhsHT09N0m16vR25urilEhg8fbvrgpCRJ6N27N86fPw+dTodOnTqp9SNYHV9rlnOYnqk5bGqJ1atXC3d3d5GTkyMMBoPZ16JFi0zDx7Vr15rdZjQaxbvvvit8fX3FI488Im6//XYREREhIiIixOjRo8Wf//xn8fbbb4u8vDy7PH20rX3r3r27KCsrU/vHsKrt27cLV1dXsXLlyl/17OTJk6ZTkfv27SsuXLjwq74tWLBA9OvXzyZOE1USX2uWc4SeaXrkAgC33XYbvL29sXbtWtx6661ml9nQ6XRm/3ZycjL9v66uDuvWrcPYsWOxfPlyODk5obKyEvn5+SgoKEB+fj5WrFiB+vp6ODk5ISwsDNHR0YiJiUFUVFSLz+DQqrb2LT4+Ht27d7dqzWobOnQogoKCsHbtWtxzzz1mB+yv7pEkSWZ9E0KgvLwc69evx6RJk9CxY0er164mvtYs5wg903y49O3bF7NmzcKaNWvwxz/+EXfcccdN/+jLsox3330Xhw4dwqZNm0y/nM6dO2P06NEYPXo0gF8+13Dq1ClT2OTm5uLDDz803Tc6Oto0lRYREQF3d/f2/WEVpGTfHIWfnx8ee+wxPPXUU1i+fDkWLlzYomuGNTQ0IDU1FXq9HvPnz7fpNyWtwdea5RyiZ2oPnVrip59+EkOGDBG9evUSX331lTAajUIIIZYsWSKcnZ2Fi4uLeP/994Usy6KpqUm89957okuXLmLRokXCYDBY9FxVVVUiOztbvP7662LevHli2LBhIiIiQkRFRYmpU6eK1NRUsXnzZlFaWmr6RK1WWbNv9qK2tlZMnz5deHl5iVdffVXU1dUJWZbF6dOnhZ+fn3B2dhYhISGmT1TX1NSIp59+WnTs2FG8/fbbapevGr7WLGfvPbOZC1ceP34c9913H0pLS5GcnIy5c+dClmWUl5cDAAIDA1FTU4MVK1bgww8/xL333otXXnkFHh4ebXpeWZZx+vRp5Ofnm6bUmg+2+fr6IioqClFRUYiJiUF4eDi8vLza/LMqSa2+2bKff/4Zjz76KLZu3YqkpCQ8+eST6N+/P4qKiiDLMlxdXRESEoKDBw/iX//6Fw4fPoyUlBQkJydr/91kO+JrzXL23DObCRfglw+yDRw4ENXV1fD19cWAAQPQq1cvGI1GlJaWoqioCH5+fliwYAHuu+8+uLm5tUsdly5dwpEjR8yO39TW1kKSJISEhJhNp/Xt29dsDlUNZ8+eRWpqKj766CM4Ozur1jdbcuXKFaxevRrLly/HuXPnEBQUhNDQUHh7e6OqqgpFRUUoLy/HoEGD8NxzzyEhIUH137MW8LVmOXvtmU2Fy2effYbJkyfjrbfewvnz53Hw4EGcP38eLi4uCAwMxOjRozF+/Hh07drVqnXJsozS0lJT2Bw+fBinT5+GEALe3t6moImOjkZkZKQqazIYjUYUFhZi27ZtmumbLaioqMDOnTuRnZ2NkpIS1NfXo1OnToiIiMD48eMxbNgwm3gXaU18rVnOHntmM+EihMDgwYPRsWNH7Nq1y/Q9o9EISZI0Nx1RW1uLo0ePmk2n1dTUAACCg4NNYRMdHY2goCCrvuvVct+0zGg0QggBnU7HUUoL8bVmOXvpmc2Ey6ZNm3DXXXdh165dSEhIULsciwkh8MMPP+Dw4cOmqbRTp05BlmV4eXkhIiLCbDrN0U5nJSL7YhPhIssyBg0ahM6dO2Pnzp1ql6OYuro6HD161BQ2+fn5qKqqAgD06dPH9Jmb6OhohISE2PS7GCJyLDYRLhs3bsS0adOQlZWFkSNHql1OuxFCoKyszCxsTpw4AVmW4e7ujsjISLPpNEe6zAgR2RbNh4ssy4iNjYW/vz++/PJLtcuxuvr6ehw/ftxsOu3ChQsAgF69epmm0WJiYhAaGtqiD/0REbU3zYfLhg0bMH36dOTk5GDEiBFql6M6IQR++uknsxMFmteDcHNz+9Wxmy5duqhdMhE5IE2HiyzLGDhwILp3744dO3aoXY5mNTQ0oLCw0OxU6PPnzwP4ZRGrq8Pmd7/7HVxcXFSumIjsnabD5ZNPPsGMGTOwe/duDB8+XO1ybMq5c+dMo5v8/HwcP34cTU1NcHV1xYABA8ym02zt/Hki0j7NhovRaERMTAx69OiBzMxMtcuxeY2NjThx4oTpuE1BQYHpEhPdunUzjW6io6PRv39/uLq6qlwxEdkyzYbLRx99hJkzZ2Lv3r2Ii4tTuxy7dP78edNlbPLz83Hs2DE0NDTAxcUF/fv3N7uyQPfu3R3uar9E1HqaDBej0Yjo6Gj07t0b27dvV7sch2EwGFBUVGQ6blNQUICysjIAgL+/v1nYhIeH28w1jojI+jQZLhkZGZg1axb27duHoUOHql2OQ7t48aLZVNqRI0dMC6z97ne/Mx23sYcF1ohIOZoLF6PRiKioKAQGBmLr1q1ql0PXaF5g7eorQp85cwaA7S+wRkTK0Vy4/N///R/uu+8+7N+/H0OGDFG7HGqBqqoqHDlyxDSdduTIEdTV1UGn0yEsLMw0lRYVFYXevXtzdEPkADQVLgaDAZGRkQgJCcGWLVvULodaqSULrDWPcCIiIuDp6alyxUSkNE2Fy/vvv4/Zs2fjwIEDGDx4sNrlkIIuXbqEgoICs+M311tgLTo6Gn369OEl7YlsnGbCxWAwICIiAmFhYdi8ebPa5VA7k2UZ33//vdlFOpsXWPPx8TEtH63mAmtE1HqaCZf33nsPc+bMwTfffIPY2Fi1yyEV/NYCa5IkISgoyOxUaGsvsEZEltFEuBgMBoSHh2PAgAH49NNP1S6HNOLqBdaaw+bqBdaalyCIiYlBZGQkF1gj0hBNhMvatWvxwAMP4Ntvv8XAgQPVLoc07MqVKzh27JjZqdDNC6z17dvX7FTo0NBQjm6IVKJ6uDQ1NWHAgAGIjIzExo0b1SyFbFDzAmtXXxG6qKgIsizDw8PDtARB83QaF1gjsg7Vw+Wdd97Bgw8+iO+++w7R0dFqlkJ2or6+3jS6af66ePEigF8vsNavXz8uH03UDlQNl6amJvTv3x8xMTFYv369WmWQnbvRAmsdOnRAeHg4F1gjUpiq4fL222/joYcewqFDhxAVFaVWGeSAGhoacPz4cbNToa9eYK35emnR0dEICwvjAmtEFlItXBobG9G/f38MGjQIH3/8sRolEJmpqKgwC5vmBdbc3NwwYMAAsysLcIE1ohtTLVzWrFmD+fPn4/Dhw4iMjFSjBKIbal5g7eoz03766ScAQPfu3c3ChgusEZlTJVwaGxsRFhaGoUOH4qOPPrL20xO12vnz580uY3O9Bdaaj91wgTVyZKqEy+rVq5GcnIz8/HyEh4db++mJFHPtAmv5+fk4e/YsAKBr165mV4TmAmvkSKweLs2jlri4OHz44YfWfGoiq7h6gbX8/HwcPXrUbIG1qy/S2aNHD7XLJWoXVg+XDz74ALNnz0ZBQQEGDBhgzacmUoXRaMTJkyfNrgh95swZBAUF8SKtZLcUCRdLNtF839bMRXP+mrTMkv3AaDTCYDC0apqM+wHZAmclNpKSknLdT9cbDAY0NDQoshjUuXPnMH/+/DZvh6i9pKenIywsrEX3FUJAr9fDxcXFos/QXLx4EdOnT29tiURWo0i4nDhxAs8++6zZ9w4ePIiFCxeiqqoKkydPxpIlS9r0jmvGjBkMF9K077//vkWv0eLiYqxcuRKlpaXw8PDAhAkTMG3aNDg733x3/Otf/8pwIZugSLhIkmR2fabS0lKMHz8eKSkpGDhwIB588EHU1NRg2bJlHNKT3bp2P7ievLw8PPbYY7j77rsxZ84cVFRUYPXq1cjKysLrr78Od3d3K1VL1L4Uvx65EAIjR47EwoUL8Ze//AWJiYnIzc1Feno6Tp8+rfTTEdmMyspKzJ8/H4sXL8af//xnREdHIykpCevWrYObmxvmzZsHWZbVLpNIEYqHS2ZmJmpqarBo0SLTKKVr16544YUXMGbMGIsOehLZCyEEZs+ejalTp2LChAlmI3gPDw8sW7YMer0eKSkp3EfILigaLkIIzJgxAxkZGb+a/vrrX/+Ks2fPmhZ2InIk27Ztw8WLF/H0009fd2rYxcUF7777LjZt2oTi4mIVKiRSlqLhUlVVhStXrmDChAm/fiKdDtOmTcOMGTOUfEoizZNlGYsXL8aqVatuuDJmx44dsXDhQsybN4+jF7J5iobLnDlzMGnSpN88aL969Wrs2rWLOw45lFWrVqFbt26IiIi46X3vvvtuNDQ0IDs72wqVEbUfRc4WA36ZEtu+fTt+/vnn37yPl5cXnJ2dUVhYyE/nk0OQZRkrV67Etm3bWnSmpCRJeO211/CXv/wFBw4c4NmVZLMUG7nU1dUBAHx9fW94vyeffBL33HOPUk9LpGnr1q1D165dLbqG2K233gqDwYDCwsJ2rIyofSkWLqmpqYiIiLjpO62lS5fi2LFjnBojuyeEQFpaGt58802LRiCSJGHBggV49NFH27E6ovalWLgsX74cq1evvun93NzcoNPpUFZW1qLtCiGwb9++tpZHZHX79++Hi4sL+vbta/Fjp02bhosXL6KhoUH5woisQLFw8fDwwODBg1t035kzZ2L27Nktum9OTg7uvPPOtpRGpIqnnnoKL774YquOm+h0OoSHh+Of//xnO1RG1P4UC5e8vLwW70RpaWnIyclp0dTYfffdh9TU1LaWR2RVer0etbW1GDt2bKu3sWzZMnzyySecQiabpFi49OnTp8X39fHxAQBcunTphvcTQqC8vJwXrCSb87//+7+Iiopq09leXbt2BQB+8JhskuKXf2kJSZKQmJiIxx577Ib3y87Ohru7+00vBkikJUIIbNq0Ca+++mqbtiNJEsaMGYNFixYpVBmR9agSLsAvp2hmZGTccMg/a9Ys/Pvf/7ZiVURtV19fDyGEaeTRFkuXLkVubi6nxsjmqBYut9xyC4QQvznkl2UZ586dwwMPPGDlyojaZsWKFQgNDVXkA5De3t4AgNra2jZvi8iaVAsXSZIwZcoUzJw587q3v/HGGwgICOCUGNmcDz74AC+99JIi25IkCbGxsXj55ZcV2R6RtagWLgDw1ltv4auvvvrVGhZCCDz99NP49NNPVaqMqHWEEDAYDOjXr59i23zxxRexdetWxbZHZA2qhou3tzcCAgKQlpZm9v3vvvsOQgjExsaqVBlR6/z000/Q6XSKXhMsICAAsixzITGyKaqGCwB88cUXWLBgAfR6PYBf3vlNmDAB6enpvGgf2Zx//vOfGDFihKLblCQJ3t7e2Llzp6LbJWpPqodLWFgYkpKSMHHiRFRUVGDx4sXo0KED5syZo3ZpRBbLysrC3/72N8W3+9RTTyl2HIfIGhS75H5rSZKEDRs24A9/+AMSEhLg4uKC3NxcjlrIJrm4uFj0geKWmjRpEn744QecOXNG8W0TtQdFwsXV1RXbt29v0zaSk5Nx+vRpBAQEoKCgAAUFBWa3t+bif0TW5OLiguTkZOzevbtdth8bGwuDwdAu2yZSmiQU+HRW8/GSlhJCWDwycXJygqurq0WPIbKm+vr6Ft+3qakJkiTB2dmy93dOTk5wcXGxtDQiq1MkXCzRfNaLJEmKn1VDZCsqKipw6dIldOzYEZ07d2ZgkN1R5YD+p59+ioEDB8LZ2RlJSUnYu3evGmUQqcbHxwd79uzBtGnTMHToUDz//PMoLy9XuywixVh95NJMlmVs3LgRqampOHr0KMaMGYMlS5YgPj5ejXKIVFFXV4ePPvoI77zzDi5duoTJkyfjoYcesmhZZCItUi1cmsmyjE2bNiE1NRUFBQUYPXo0lixZglGjRqlZFpFV6fV6fPzxx3j77bdRU1ODSZMm4U9/+hN69uypdmlEraJ6uDSTZRmfffYZUlJSkJ+fj4SEBDz33HNISEhQuzQiq6mvrzeFTFVVFX7/+9/jT3/6E3r37q12aUQW0Uy4NJNlGVu2bEFqaioOHTqEhIQELFmyBAkJCTz4Tw6jvr4en3zyCd5++21UVlbi97//PR566KF2+QwNUXvQXLg0E0Jg69atSElJwXfffYeRI0fiueeeQ2JiIkOGHEZDQwPWr1+Pt956CxcvXsTEiRMxf/58hgxpnmbDpZkQAtu3b8fzzz+PvLw8xMfHY8mSJbjtttsYMuQwGhoasHHjRqxZswYXLlzAhAkTMH/+fAQGBqpdGtF1aT5cmgkh8PnnnyMlJQXffPMNhg8fjiVLlmDs2LEMGXIYzSHz1ltv4fz586aQCQoKUrs0IjM2Ey7NhBDYsWMHUlJScODAAcTFxeG5557DuHHjGDLkMBobG/Hpp59izZo1OHfuHG6//XbMnz8fwcHBapdGBMAGw6WZEAJffvklnn/+eezfvx/Dhg3DkiVLkJSUxJAhh9HY2IjNmzdj9erVqKioQFJSEubPn4+QkBC1SyMHZ7Ph0kwIga+++gopKSnIzc3F0KFDsXjxYkyYMIEhQw6jqanJFDI//fQTxo0bh4cffhihoaFql0YOyubDpZkQArt27UJKSgr27NmDwYMHY8mSJbjjjjsYMuQwmpqa8Nlnn+HNN99EeXm5KWSUXHaZqCXsJlyaCSGQlZWF559/Hrt378agQYOwePFi3HnnnQwZchgGgwFbtmzBqlWrcPbsWYwdOxYPP/wwwsLC1C6NHITdhUszIQSys7ORkpKC7OxsDBw4EIsXL8akSZMYMuQwDAYDtm7dijfffBM//vgjbrvtNjz88MPo37+/2qWRnbPbcLlac8hkZWUhOjoaS5YswaRJk6DTqb7KM5FVGI1GU8j88MMPGD16NJKTkxky1G4cIlya5eTkICUlBV9//TWioqKwePFiTJ48mSFDDsNoNGL79u1YtWoVzpw5g8TERCQnJ2PAgAFql0Z2xqHCpdmePXuQkpKCnTt3IjIyEs8++yymTJnCkCGHYTQa8fnnn2PVqlUoLS3FqFGjkJycjIiICLVLIzvhkOHSLDc3FykpKfjyyy8RHh6OxYsX46677mLIkMOQZRmZmZlYuXIlvv/+e8THxyM5ORlRUVFql0Y2zqHDpdm+ffuQkpKCL774AgMGDMCzzz6LqVOnwsnJSe3SiKxClmXs2LEDK1euRElJCUOG2ozhcpX9+/cjNTUVmZmZ6N+/P5555hlMnz6dIUMOQ5ZlfPHFF1i1ahWKi4sxfPhwJCcnIyYmRu3SyMYwXK7j4MGDSE1Nxfbt2xEWFoZnn30Wd999N0OGHIYsy/jqq6+Qnp6O4uJixMXFITk5GbGxsWqXRjaC4XID33zzDVJTU7Ft2zb069cPzzzzDGbMmAFnZ2e1SyOyClmWsXPnTqSnp+PUqVMYNmwYHnnkEYYM3RTDpQXy8vKQmpqKLVu2IDQ0FIsWLcLMmTMZMuQwZFnGrl27sHLlShQVFWHo0KFITk7G4MGD1S6NNIrhYoFDhw4hNTUVmzdvRnBwMJ555hnMmjWLIUMOQ5ZlZGVlIT09HSdOnMDgwYPxyCOPYMiQIWqXRhrDcGmFw4cPIzU1FZs2bUJQUBAWLVqEe++9Fy4uLmqXRmQVzdfwS09PR2FhIQYNGoTk5GQMHTqUl1ciAAyXNsnPz8cLL7yAjRs3IjAwEH//+99x//33M2TIYTRfwy89PR3Hjx9HbGwskpOTMWzYMIaMg2O4KODIkSN44YUXsH79evTp0weLFi3C/fffD1dXV7VLI7IKIQR2796N9PR0HD16FDExMXjkkUcQFxfHkHFQDBcFHT161BQyvXr1wt///nfMmTOHIUMOQwiBvXv3YsWKFThy5Aiio6ORnJyM4cOHM2QcDMOlHRw7dgwvvvgiPv74Y/Ts2RMLFy7E3Llz4ebmpnZpRFbRHDLp6ekoKChAVFQUkpOTMWLECIaMg2C4tKPCwkK8+OKLyMjIQI8ePbBw4UI88MADDBlyGEII7Nu3D+np6Th8+DAiIyORnJyM+Ph4hoydY7hYwYkTJ0whc8stt2DBggWYN28eOnTo0KLHCyFw8eJF1NbWwsvLC35+ftwxyaYIIXDgwAGsWLEChw4dQnh4OJKTkzFq1KgWv5a5H9gYQVZz4sQJcf/99wtnZ2fRs2dPsXz5clFXV/eb96+qqhLLli0TwcHBAoDpKzg4WCxbtkxUVVVZr3giBciyLPbv3y/uv/9+ERERIaZPny527dolZFn+zcdwP7BNDBcVFBUVidmzZwsXFxfRo0cPkZaW9quQyczMFJ6enkKSJCFJktlO1fw9T09PkZmZqdJPQdR6siyLAwcOiDlz5oiIiAgxbdq064YM9wPbxXBR0alTp8TcuXOFi4uLCAgIEK+99pq4cuWKyMzMFE5OTkKn05ntTNd+6XQ64eTkxB2LbNrBgwfF3LlzRUREhJg6dar46quvhNFo5H5g43jMRQNOnz6Nf/zjH1i3bh38/PxQWVmJpqYmtORXo9Pp4O7ujrKyMvj6+rZ/sUTtJC8vD+np6Thw4AACAwPx5ZdfoqGhgfuBjeKSixoQHByMNWvW4MSJE+jbty8aGxtbtEMBv1zrqa6uDuvWrWvnKona16BBg7BmzRqsXbsWP//8M+rr67kf2DCOXDRECIHQ0FCcPn3aosdJkoSgoCCcOnWKZ8+QzeN+YB8YLhpy4cIF+Pv7t+nxfn5+ClZEZH3cD+wDp8U0pLa2tk2Pv3z5skKVEKmH+4F9YLhoiJeXV5se7+3trVAlROrhfmAfGC4a4ufnh+DgYIvniyVJQnBwMDp37txOlRFZD/cD+8Bw0RBJkvD444+36rFPPPEED2KSXeB+YB94QF9jqqur0bNnT+j1esiyfNP78/x+skfcD2wfRy4a4+vriw0bNkCSJOh0N/716HQ6SJKEjRs3cociu8L9wPYxXDQoKSkJ27Ztg7u7OyRJ+tUwv/l77u7u2L59O8aPH69SpUTth/uBbWO4aFRSUhLKysqwbNkyBAUFmd0WFBSEZcuW4ezZs9yhyK5xP7BdPOZiA4QQqKysxOXLl+Ht7Y3OnTvzoCU5HO4HtoXhQkREiuO0GBERKY7hQkREimO4EBGR4hguRESkOIYLEREpjuFCRESKY7gQEZHiGC5ERKQ4hgsRESmO4UJERIpjuBARkeIYLkREpDiGCxERKY7hQkREivt/+XsOhxbi1RoAAAAASUVORK5CYII=\n",
      "text/plain": [
       "<Figure size 500x400 with 22 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "from kan import *\n",
    "# create a KAN: 2D inputs, 1D output, and 5 hidden neurons. cubic spline (k=3), 5 grid intervals (grid=5).\n",
    "model = KAN(width=[2,5,1], grid=5, k=3, seed=1)\n",
    "\n",
    "# create dataset f(x,y) = exp(sin(pi*x)+y^2)\n",
    "f = lambda x: torch.exp(torch.sin(torch.pi*x[:,[0]]) + x[:,[1]]**2)\n",
    "dataset = create_dataset(f, n_var=2)\n",
    "dataset['train_input'].shape, dataset['train_label'].shape\n",
    "\n",
    "# train the model\n",
    "model.fit(dataset, opt=\"LBFGS\", steps=20, lamb=0.01);\n",
    "model(dataset['train_input'])\n",
    "model.plot()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 21,
   "id": "4fc161de",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 500x400 with 6 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "model = model.prune()\n",
    "model.plot()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "5a8dd8a8",
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3 (ipykernel)",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.9.7"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 5
}
